#include <iostream>

using namespace std;

int arr[3][3]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};

int main(int argc, char const *argv[]) {
  // 指针访问二维数组指定的元素
  cout << *(*arr + 7) << endl;
  cout << *(*(arr + 2) + 1) << endl;

  // 二行三列
  cout << a[2 - 1][3 - 1] << endl;
  cout << *(*(a + (2 - 1)) + (3 - 1)) << endl;

  int(*p)[4] = a;
  cout << *(p[2 - 1] + (3 - 1)) << endl;
  cout << *(*(p + 1) + 2) << endl;

  cout << *(*a + ((2 - 1) * 4) + (3 - 1)) << endl;

  // DECARE
  int *a1[10];             // 指针数组
  int(*a2)[10];            // 数组指针
  int (*a3)(int);          // 函数指针
  int (*a4[10])(int);      // 函数指针数组
  int (*(*a5))(int) = a4;  // 指向函数指针数组的指针

  return 0;
}
